home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / machserver / 1.098 / mach / ds3100.md / cvtStat.c < prev    next >
C/C++ Source or Header  |  1990-09-21  |  3KB  |  123 lines

  1. /* 
  2.  * cvtStat.c --
  3.  *
  4.  *    Procedure to map from Unix *stat system calls to Sprite.
  5.  *
  6.  * Copyright 1986 Regents of the University of California
  7.  * All rights reserved.
  8.  */
  9.  
  10. #ifndef lint
  11. static char rcsid[] = "$Header: /sprite/src/kernel/mach/ds3100.md/RCS/cvtStat.c,v 9.2 90/09/21 15:51:37 mgbaker Exp $ SPRITE (Berkeley)";
  12. #endif not lint
  13.  
  14. #include "sprite.h"
  15. #include "user/fs.h"
  16. #include "compatInt.h"
  17.  
  18. #include "user/sys/types.h"
  19. #include "stat.h"
  20.  
  21. /*
  22.  * Forward defs.
  23.  */
  24. static int CvtSpriteToUnixType _ARGS_((register int spriteFileType));
  25.  
  26.  
  27. /*
  28.  *----------------------------------------------------------------------
  29.  *
  30.  * CvtSpriteToUnixAtts --
  31.  *
  32.  *    Procedure to convert the Sprite file system attributes 
  33.  *    structure to the Unix format.
  34.  *
  35.  * Results:
  36.  *    none.
  37.  *
  38.  * Side effects:
  39.  *     none.
  40.  *
  41.  *----------------------------------------------------------------------
  42.  */
  43.  
  44. ReturnStatus
  45. CvtSpriteToUnixAtts(spriteAttsPtr, unixAttsPtr)
  46.     register    Fs_Attributes    *spriteAttsPtr;
  47.     register    struct stat    *unixAttsPtr;
  48. {
  49.     struct stat unixAtts;
  50.  
  51.     unixAtts.st_dev        = spriteAttsPtr->domain;
  52.     unixAtts.st_ino        = spriteAttsPtr->fileNumber;
  53.     unixAtts.st_mode    = spriteAttsPtr->permissions |
  54.                     CvtSpriteToUnixType(spriteAttsPtr->type);
  55.     unixAtts.st_nlink    = spriteAttsPtr->numLinks;
  56.     unixAtts.st_uid        = spriteAttsPtr->uid;
  57.     unixAtts.st_gid        = spriteAttsPtr->gid;
  58.     unixAtts.st_rdev    = (spriteAttsPtr->devType << 8) |
  59.                   (spriteAttsPtr->devUnit & 0xff);
  60.     unixAtts.st_size    = spriteAttsPtr->size;
  61.     unixAtts.st_blksize    = spriteAttsPtr->blockSize;
  62.     unixAtts.st_blocks    = spriteAttsPtr->blocks * 2;
  63.     unixAtts.st_atime    = spriteAttsPtr->accessTime.seconds;
  64.     unixAtts.st_mtime    = spriteAttsPtr->dataModifyTime.seconds;
  65.     unixAtts.st_ctime    = spriteAttsPtr->descModifyTime.seconds;
  66.     unixAtts.st_serverID = spriteAttsPtr->serverID;
  67.     unixAtts.st_version    = spriteAttsPtr->version;
  68.  
  69.     return(Vm_CopyOut(sizeof(unixAtts), (Address) &unixAtts,
  70.         (Address) unixAttsPtr));
  71. }
  72.  
  73. /*
  74.  *----------------------------------------------------------------------
  75.  *
  76.  * CvtSpriteToUnixType --
  77.  *
  78.  *    Convert from Sprite file types to the IFMT mode bits of a unix file
  79.  *
  80.  * Results:
  81.  *    Unix file type bits.
  82.  *
  83.  * Side effects:
  84.  *     none.
  85.  *
  86.  *----------------------------------------------------------------------
  87.  */
  88.  
  89. static int
  90. CvtSpriteToUnixType(spriteFileType)
  91.     register    int spriteFileType;
  92. {
  93.     register unixModeBits;
  94.  
  95.     switch (spriteFileType) {
  96.     default:
  97.     case FS_FILE:
  98.         unixModeBits = S_IFREG;
  99.         break;
  100.     case FS_DIRECTORY:
  101.         unixModeBits = S_IFDIR;
  102.         break;
  103.     case FS_SYMBOLIC_LINK:
  104.         unixModeBits = S_IFLNK;
  105.         break;
  106.     case FS_DEVICE:
  107.     case FS_REMOTE_DEVICE:        /* not used */
  108.         unixModeBits = S_IFCHR;
  109.         break;
  110.     case FS_LOCAL_PIPE:        /* not used */
  111.     case FS_NAMED_PIPE:
  112.         unixModeBits = S_IFIFO;
  113.         break;
  114.     case FS_REMOTE_LINK:
  115.         unixModeBits = S_IFRLNK;
  116.         break;
  117.     case FS_PSEUDO_DEV:
  118.         unixModeBits = S_IFPDEV;
  119.         break;
  120.     }
  121.     return(unixModeBits);
  122. }
  123.